home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2000 #4
/
Amiga Plus CD - 2000 - No. 4.iso
/
Vollversion
/
CamD
/
development
/
examples
/
drum
/
large.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-05-15
|
2KB
|
73 lines
/* ============================================================================ *
large.c -- large code routines for drum machine
By Talin.
©1991 The Dreamers Guild
* ============================================================================ */
#include "std_headers.h"
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
#ifndef DOS_DOS_H
#include <dos/dos.h>
#endif
#include <intuition/classes.h>
#include <midi/camd.h>
#include <midi/mididefs.h>
#include <libraries/realtime.h>
#include <libraries/realtimebase.h>
#include <clib/camd_protos.h>
extern LONG clocks_per_column,
total_playback_column,
local_playback_column,
next_column_time;
extern WORD clock_state;
extern struct Task *main_task;
ULONG myHookFunc (struct pmTime *msg, struct PlayerInfo *pi);
#pragma regcall( myHookFunc(a1,a2) )
/* Hook function... */
ULONG myHookFunc (struct pmTime *msg, struct PlayerInfo *pi)
{ struct Conductor *cond = pi->pi_Source;
switch (msg->pmt_Method) {
case PM_TICK:
if (msg->pmt_Time > next_column_time)
{ /* I don't like this method... We need a real method... */
total_playback_column++;
next_column_time += clocks_per_column;
Signal(main_task,SIGBREAKF_CTRL_F);
}
break;
case PM_STATE:
clock_state = cond->cdt_State;
Signal(main_task,SIGBREAKF_CTRL_E);
break;
#if 0
case PM_SHUTTLE:
current_time = msg->pmt_Time;
if ( (current_time ^ last_time) & ~0x3f)
{ Signal(main_task,SIGBREAKF_CTRL_F);
last_time = current_time;
}
#endif
}
return 0L;
}